home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Just Call Me Internet
/
Just Call Me Internet.iso
/
prog
/
atari
/
m2
/
cat3src
/
magic
/
d
/
mttermin.d
< prev
next >
Wrap
Text File
|
1997-10-26
|
9KB
|
227 lines
(*----------------------------------------------------------------------*
* *
* MAGICTOOLS Modula's All purpose GEM Interface Cadre Toolbox *
* ÿ ÿ ÿ ÿ ÿ *
*----------------------------------------------------------------------*
* Version 3.30 02.02.1992 (C)90/91/92 by Peter Hellinger Software *
*----------------------------------------------------------------------*
* Dieses Modul ist urheberrechtlich geschtzt. *
* *
* Die Verffentlichung des Quelltextes oder Teilen daraus, sowie die *
* Verbreitung des bersetzten, nicht gelinkten Codes in schriftlicher, *
* oder maschinenlesbarer Form, insbesondere in Zeitschriften, Mail- *
* boxen oder anderen Medien bedarf der ausdrcklichen schriftlichen *
* Einverstndnisserklrung des Autors. *
* *
* Die Verbreitung des Moduls als Teil eines gelinkten Programms ist *
* fr Lizenznehmer ausdrcklich erlaubt! Der Autor behlt sich das *
* Recht vor, diese Erlaubnis jederzeit und ohne Angaben von Grnden zu *
* widerrufen. *
*----------------------------------------------------------------------*)
(*----------------------------------------------------------------------*
* mtTerminal Terminal VT52-Treiber, der in einem vom Benutzer zu *
* bestimmenden Bildschirmausschnitt (Fenster!) luft. *
*----------------------------------------------------------------------*)
DEFINITION MODULE mtTerminal;
FROM MagicSys IMPORT Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6,
Bit7, Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14,
Bit15, LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET;
(* Das folgende Set entspricht dem Attributset von 1stWord *)
TYPE Attribute = (fat, (* Fettschrift *)
light, (* helle Schrift *)
italic, (* kursive Schrift *)
underline, (* unterstrichen *)
superscript, (* hochgestellte Schrift *)
subscript, (* tiefgestellte Schrift *)
invers, (* inverse Schrift *)
offsetflag); (* Fll-Flag *)
Attribut = SET OF Attribute;
TYPE TERMINAL; (* Terminal-Typ, opaque *)
(*--------------------------------------------------------------------------*
* Auf die folgenden Variablen sollte nur LESEND zugegriffen werden! *
*--------------------------------------------------------------------------*)
VAR Terminal: TERMINAL; (* Aktuelles Terminal *)
Lines: sINTEGER; (* Anzahl Zeilen des aktuellen Terminals *)
Columns: sINTEGER; (* Anzahl Spalten des aktuellen Terminals *)
Xpos: sINTEGER; (* X-Pixelpos des aktuellen Terminals *)
Ypos: sINTEGER; (* Y-Pixelpos des aktuellen Terminals *)
Width: sINTEGER; (* Breite des Terminals in Pixel *)
Height: sINTEGER; (* Hhe des Terminals in Pixel *)
CurrWidth: sINTEGER; (* Breite eines Font-Zeichens *)
CurrHeight: sINTEGER; (* Hhe eines Font-Zeichens *)
Font: sINTEGER; (* aktueller Zeichensatz *)
VAR TextHandle: sINTEGER; (* Workstation ber die TEXT ausgegeben
* wird. Bildschirm lschen etc. erfolgt
* ber andere Workstations!
*)
(*--------------------------------------------------------------------------*
* Die Ausgabe der folgenden Prozeduren erfolgt immer ins aktuelle Terminal *
*--------------------------------------------------------------------------*)
PROCEDURE WriteChar (c: CHAR);
(* Schreibt Zeichen *)
PROCEDURE WriteLine (REF s: ARRAY OF CHAR);
(* schnelle Stringausgabe, kein LF *)
PROCEDURE WriteConst (REF s: ARRAY OF CHAR);
(* Stringausgabe fr konstante Strings *)
PROCEDURE WriteLn;
(* CR + LF *)
PROCEDURE WriteCard (wert: sCARDINAL; len: sCARDINAL);
PROCEDURE WriteInt (wert: sINTEGER; len: sCARDINAL);
PROCEDURE WriteLongCard (wert: lCARDINAL; len: sCARDINAL);
PROCEDURE WriteLongInt (wert: lINTEGER; len: sCARDINAL);
PROCEDURE WriteReal (wert: REAL; len: sCARDINAL);
PROCEDURE WriteLongReal (wert: LONGREAL; len: sCARDINAL);
(* Schreibt die entspechenden Werte mit Lnge len *)
PROCEDURE WriteFixReal (wert: REAL; len, fix: sCARDINAL);
PROCEDURE WriteFixLReal (wert: LONGREAL; len, fix: sCARDINAL);
(* Schreibt die entspechenden Werte mit Lnge len und fix Nachkommastellen *)
PROCEDURE InsertLine;
(* Fgt Leerzeile bei aktueller Cursorposition ein. Alle Zeilen unterhalb
* werden nach unten verschoben. Die unterste Zeile geht verloren.
*)
PROCEDURE DeleteLine;
(* Lscht Zeile an aktueller Cursorposition. Alle Zeilen unterhalb
* werden nach oben verschoben. Die unterste Zeile wird leer.
*)
PROCEDURE WhereXY (VAR x, y: sCARDINAL);
(* Ermittelt Cursorposition *)
PROCEDURE GotoXY (x, y: sCARDINAL);
(* Setzt Cursor auf Spalte/Zeile. Die HOME-Position ist 0,0 *)
(* Hinweis fr WhereXY und GotoXY:
* -------------------------------
* Diese Prozeduren arbeiten nur korrekt, wenn im Terminal ausschlielich
* EIN Font verwendet wurde, der zudem noch MONOSPACED sein mu. Fr den
* Systemfont ist dies gegeben.
*
* Werden FSM-Fonts oder proportionale Bitmap-Fonts verwendet, ist eine
* Spalten/Zeilen-Weise Positionsberechnung nicht mglich. Bei Einsatz
* solcher Fonts sollten die Prozeduren WhereCursor und SetCursor benutzt
* werden.
*)
PROCEDURE WhereCursor (VAR x, y: sINTEGER);
(* Ermittelt Cursorposition in Rasterkoordinaten *)
PROCEDURE SetCursor (x, y: sINTEGER);
(* Setzt Cursorposition in Rasterkoordinaten *)
PROCEDURE CursorOn;
PROCEDURE CursorOff;
(* Cursorhandling *)
PROCEDURE CursorStop;
(* Stoppt blinkenden Cursor. Wird ggw. nicht untersttzt! *)
PROCEDURE CursorBlink;
(* Lt Cursor blinken. Wird ggw. nicht untersttzt! *)
(* Hinweis:
* --------
* Cursorhandling wird gegenwrtig nur bei monospaced Fonts untersttzt.
*)
PROCEDURE WrapOff;
PROCEDURE WrapOn;
(* Umbruch am Zeilenende. WrapOff ist Default *)
PROCEDURE ClearLine;
(* Lscht aktuelle Zeile *)
PROCEDURE ClearStartOfLine;
(* Lscht zum Zeilenanfang *)
PROCEDURE ClearEndOfLine;
(* Lscht zum Zeilenende *)
PROCEDURE ClearScreen;
(* Lscht Bildschirm *)
PROCEDURE ClearStartOfScreen;
(* Lscht zum Anfang des Bildschirms *)
PROCEDURE ClearEndOfScreen;
(* Lscht zum Ende des Bildschirms *)
PROCEDURE ForegroundColor (color: sINTEGER);
PROCEDURE BackgroundColor (color: sINTEGER);
(* Setzt die Farben des Terminals *)
PROCEDURE InversOn;
PROCEDURE InversOff;
(* Invers ein und wieder aus *)
PROCEDURE SetAttribut (attrib: Attribut);
(* Setzt die Textattribute des Terminals *)
PROCEDURE SetTabspace (tab: sINTEGER);
(* Setzt die Breite des Tab-Sprungs, Default = 8 *)
(*--------------------------------------------------------------------------*
* Support fr mehrere Terminals *
*--------------------------------------------------------------------------*)
PROCEDURE OpenTerminal (rect: ARRAY OF LOC): TERMINAL;
(* ffnet ein Terminal an Pos rect.x, rect.y und Breite/Hhe rect.w, rect.h.
*)
PROCEDURE CloseTerminal (VAR term: TERMINAL);
(* Schliet das Terminal. *)
PROCEDURE ChangeTerminal (term: TERMINAL): TERMINAL;
(* Wechselt das Terminal. Returniert das bisherige aktuelle Terminal *)
PROCEDURE UpdateTerminal;
(* Bringt die Parameter des aktuellen Terminals auf die neuesten Werte. MUSS
* nach jedem Verndern des Fonts (Gre, Id) aufgerufen werden, da sonst das
* Terminal keine Information ber die genderten Daten erhlt!
*)
PROCEDURE GetTerminal (VAR rect: ARRAY OF LOC);
(* Liefert Gre des aktuellen Terminals *)
PROCEDURE SetTerminal (rect: ARRAY OF LOC);
(* Setzt Gre und Position des aktuellen Terminals.
* Breite und Hhe (w/h) in PIXEL
*)
PROCEDURE GetMaximum (VAR rect: ARRAY OF LOC);
(* Liefert grtmgliche Flche des Terminals *)
PROCEDURE RedrawTerminal (term: TERMINAL; rect: ARRAY OF LOC);
(* not yet implemented *)
PROCEDURE ClipRect (doit: BOOLEAN; rect: ARRAY OF LOC);
(* Clipping. *)
END mtTerminal.